CREATE
OR REPLACE PROCEDURE projectch_auto_to_project_cbs (p_phid NUMBER) AS
    project_phid NUMBER;
    person_phid NUMBER;
    project_type NUMBER;
    new_phid NUMBER;
    not_id text;
BEGIN

    -- DBMS_OUTPUT.PUT_LINE('开始 ' );
    -- 查找项目的phid
    SELECT u_xmmc INTO project_phid FROM p_form_xmch_m WHERE phid = p_phid;

    -- DBMS_OUTPUT.PUT_LINE('project_phid: ' || project_phid);
    -- 查找项目类型
    SELECT phid_type INTO project_type FROM project_table WHERE phid = project_phid;
        -- DBMS_OUTPUT.PUT_LINE('project_type: ' || project_type);

    FOR rec IN (SELECT * FROM p_form_xmch_d1 WHERE pphid = p_phid) LOOP

    IF rec.u_cbbm IS NOT NULL AND rec.u_cbbm != '' THEN
        IF rec.s_tree_name == '成本' THEN
            not_id := rec.s_tree_id;
        END IF;
        IF rec.s_tree_name != '成本' THEN

            -- 检查是否含有是父树
            IF rec.s_tree_pid IS NOT NULL AND rec.s_tree_pid != '0' AND rec.s_tree_pid != '' AND rec.s_tree_name NOT IN ('成本测算','措施费用','主体工程费用','上级管理费') AND rec.s_tree_pid != not_id  THEN 
                -- 查找项目CBS的phid
                SELECT phid INTO person_phid FROM bd_cbs WHERE user_uuid = rec.s_tree_pid;
            ELSE 
                person_phid := 0;
            END IF;

            -- 判断person_phid是否为null了，如果是直接 赋值0
            IF person_phid IS NULL THEN 
                person_phid := 0;
            END IF;

            new_phid := seq_auto_phid_cbs.nextval;


            -- DBMS_OUTPUT.PUT_LINE('Foperson_phidund: ' || person_phid);
            -- DBMS_OUTPUT.PUT_LINE('new_phid: ' || new_phid);

            INSERT INTO bd_cbs (
                product_category, --01
                cbs_code, --02
                cbs_name, --03
                cbs_style, --04
                cbs_islast, --05
                ex_cbscode, --06
                ex_cbsname, --07
                note, --08
                cbs_char, --09
                cbs_bala, --10
                cbs_sico, --11
                cbs_congeal, --12
                cbs_open, --13
                phid_unit, --14
                qu_spec, --15
                isaccrual, --16
                cbs_dept, --17
                cbs_pc, --18
                curid, --19
                cbs_unite, --20
                cbs_con, --21
                parent_code, --22
                this_code, --23
                itemid, --24
                res_mode, --25
                phid_cbs_type, --26
                updatedatetime, --27
                phid_acco, --28
                gfi_import, --29
                cbs_status, --30
                remarks, --31
                phid, --32
                parentphid, --33
                ctype, --34
                ccbs_code, --35
                cpc, --36
                ccat_id, --37
                pcid, --38
                parentpccbsid, --39
                cbsqdid, --40
                ng_insert_dt, --41
                ng_update_dt, --42
                creator, --43
                ng_record_ver, --44
                editor, --45
                cur_orgid, --46
                cbs, --47
                is_share, --48
                level_path, --49
                ng_phid_cu, --50
                ng_phid_bp, --51
                ng_phid_org, --52
                ng_phid_ui_scheme, --53
                ng_phid_original, --54
                ng_orgid_original, --55
                ng_sv_search_key, --56
                ng_sd_search_key, --57
                ng_share_sign, --58
                cbsid, --59
                ng_bp_names, --60
                ng_bp_phids, --61
                phid_app, --62
                app_status, --63
                app_dt, --64
                wf_flag, --65
                cbsproperty, --66
                unleaf_use, --67
                collect_type, --68
                taxrate, --69
                ng_write_source, --70
                is_con_safety, --71
                phid_con_type, --72
                phid_account_basic, --73
                phid_allocation_type, --74
                user_uuid --75
        )
        VALUES
                ('i8', --01
                rec.u_cbbm, --02
                rec.s_tree_name, --03
                null, --04
                null, --05
                null, --06
                null, --07
                '', --08
                null, --09
                null, --10
                null, --11
                '0', --12
                null, --13
                null, --14
                null, --15
                null, --16
                null, --17
                null, --18
                0, --19
                null, --20
                null, --21
                '', --22
                rec.u_cbbm, --23
                0, --24
                null, --25
                project_type, --26  项目类型
                null, --27
                0, --28
                null, --29
                '1', --30
                '', --31
                new_phid, --32  phid
                person_phid, --33  父phid
                0, --34
                null, --35
                null, --36
                null, --37
                project_phid, --38   估计是项目的phid
                0, --39
                0, --40
                SYSDATE, --41
                SYSDATE, --42
                rec.creator, --43  创建人
                1, --44
                rec.creator, --45   创建人
                1, --46
                '0', --47
                0, --48
                'CBS' || new_phid, --49 估计是CBS+phid的拼接
                1, --50
                0, --51
                1, --52
                0, --53
                0, --54
                0, --55
                '10', --56
                '1', --57
                5, --58
                null, --59
                null, --60
                null, --61
                0, --62
                1, --63
                SYSDATE, --64
                2, --65
                0, --66
                '0', --67
                1, --68
                0.000000000000000, --69
                null, --70
                0, --71
                0, --72
                0, --73
                0, --74
                rec.s_tree_id --75
                );
        END IF;
    END IF;

    END LOOP;

commit;


EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE ('插入失败，错误信息：' || SQLERRM);

DBMS_OUTPUT.PUT_LINE('错误 ' );

RAISE;

ROLLBACK;

END projectch_auto_to_project_cbs;